package service.impl;

import dao.UserDao;
import dao.impl.UserDaoImpl;
import domain.PageBean;
import domain.User;
import service.UserService;

import java.util.List;
import java.util.Map;

/**
 * @author Mc.Chai
 * @program: JavaWeb
 * @create 2022-03-31-21:19 21:19
 */
public class UserServiceImpl implements UserService {
    private UserDao userDao = new UserDaoImpl();
    /**
     * 查询所有的用户信息
     * */
    @Override
    public List<User> findAll() {
        //调用dao完成查询

        List<User> users = userDao.findAll();

        return users;
    }

    /**
     * 查询输入的用户名和密码对应的用户
     * */
    @Override
    public User login(User user) {
        User login_user = userDao.findUserByUsernameAndPassword(user.getUsername(), user.getPassword());
        return login_user;
    }

    @Override
    public void addUser(User user) {
        userDao.add(user);
    }

    @Override
    public void deleteUser(String id) {
        userDao.delete(Integer.parseInt(id));
    }
    /**
     * 进行用户的回显
     * */
    @Override
    public User findUser(String id) {
        User user = userDao.findUserById(id);
        return user;
    }

    /**
     * 选中行的用户信息的修改
     * @param user 修改后的用户信息
     * */
    @Override
    public void updateUser(User user) {
        userDao.update(user);
    }
    /**
     * 将所有用户的id进行遍历，逐个进行删除
     * @param parameterValues 所有用户的数据
     * */
    @Override
    public void delSelectUser(String[] parameterValues) {
        if(parameterValues!=null&&parameterValues.length>0){
            for (String parameterValue : parameterValues) {
                userDao.delete(Integer.parseInt(parameterValue));
            }
        }
    }
    /**
     * 该方法对于分页类进行数据的赋值操作，
     * 分页类（pageBean）所获取list的信息为当前页中的信息
     *
     * */
    @Override
    public PageBean<User> findUserByPage(String _currentPage, String _rows, Map<String, String[]> condition) {
        //将String类型进行转换
        int currentPage = Integer.parseInt(_currentPage);
        int rows = Integer.parseInt(_rows);
        PageBean<User> pageBean = new PageBean<>();

        //防止空指针异常（可能产生位置：在第一页按上一页）
        if (currentPage<=0){
            currentPage=1;
        }


        pageBean.setCurrentPage(currentPage);
        pageBean.setRows(rows);

        //赋值总的记录数
        int totalCount=userDao.findTotalCount(condition);
        pageBean.setTotalCount(totalCount);

        //赋值总的页码数( 总页码数= 总记录数 % 每页显示条数==0 ?  总记录数 / 每页显示条数 : 总记录数 / 每页显示条数+1 )
        int totalPage= (totalCount % rows)==0 ? totalCount/rows:(totalCount/rows)+1;
        pageBean.setTotalPage(totalPage);

        //赋值每页的数据
        //开始索引的位置=（ 当前的页码   -1   ）*  每页显示的条数
        int start=(currentPage - 1) * rows;
        List<User> list=userDao.findByPage(start,rows,condition);
        pageBean.setList(list);
        return pageBean;
    }
}
